package main

import "fmt"

// 关闭通道
func main() {
	ch := make(chan int)
	go sendData(ch)

	// 方式1：通过for循环
	for {
		value, ok := <-ch // ok代表通道是否已经关闭，value代表获取的值，通道如果关闭，value就是零值数据
		if !ok {
			fmt.Println("chan closed")
			fmt.Println(value, ok)
			break
		}
		fmt.Println(value, ok)
	}

	// 方式2： 通过for range
	for v := range ch { // 会自动判断通道是否关闭，通道关闭自动退出循环
		fmt.Println(v)
	}

}

func sendData(ch1 chan int) {
	for i := 0; i < 10; i++ {
		ch1 <- i
	}
	close(ch1) // 通知对方，通道关闭
}
